/*
 * gdt.h
 *
 *  Created on: 2021年2月27日
 *      Author: root
 *
 */
# include <common/types.h>

#ifndef GDT_H_
#define GDT_H_

namespace myos{
	class GlobalDescriptorTable
	{
	public:
		class SegmentDescriptor
		{
		private:
			myos::common::uint16_t limit_lo;   /*限制低字节*/
			myos::common::uint16_t base_lo;    //低字节指针扩展名
			myos::common::uint8_t base_hi;     //
			myos::common::uint8_t type;		//其他管道
			myos::common::uint8_t flags_limit_hi;
			myos::common::uint8_t base_vhi;
		public:
			SegmentDescriptor(myos::common::uint32_t base,myos::common::uint32_t limit, myos::common::uint8_t type);  //构造函数，每32位进行移动
			myos::common::uint32_t Base();
			myos::common::uint32_t Limit();
		}__attribute__((packed));

		SegmentDescriptor nullSegmentSelector;
		SegmentDescriptor unusedSegmentSelector;
		SegmentDescriptor codeSegmentSelector;
		SegmentDescriptor dataSegmentSelector;

	public:
		GlobalDescriptorTable();   //构造函数
		~GlobalDescriptorTable();	// 析构函数

		myos::common::uint16_t CodeSegmentSelector();
		myos::common::uint16_t DataSegmentSelector();





	};

}


#endif /* GDT_H_ */
